3xx リダイレクト画面のマークアップ
3xx リダイレクト画面のマークアップ
3xxリダイレクトにおけるレスポンスコンテンツの必要性と正しいマークアップの重要性
RFCの歴代仕様におけるレスポンスコンテンツの扱いの変遷
301、302、307、308では過去にSHOULDとされていたが現在はusuallyに緩和
303 See Otherのみハイパーテキストとハイパーリンクの提示が強く推奨される仕様
レスポンスコンテンツは短いHTMLでありハイパーリンクを含めることが望ましい
自動リダイレクト無効環境の存在
Presto Operaのオートリダイレクト無効設定によるリダイレクト画面の表示
https://gyazo.com/238b5e2146cf74ffb9ec9b98cd319e15
Android Firefoxでのアプリ連携時に3xx画面が表示される事象
https://gyazo.com/b90a39dc4f9b5ca9d52b1d52e4f23461
curlなどのCLIツールではデフォルトで自動リダイレクトが行われない仕様
code:sh
user@hostname:~$ curl http://blog.w0s.jp
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://blog.w0s.jp/">here</a>.</p>
<hr>
<address>Apache/2.4.63 (Ubuntu) Server at blog.w0s.jp Port 80</address>
</body></html>
Webサーバーにおけるリダイレクト画面の実装状況
Apache HTTP Serverは比較的適切なHTMLを返す
NginxはDOCTYPE欠如や<center>要素など不適切なHTMLを返す
リダイレクト先URLがレスポンスコンテンツに含まれない問題
Webフレームワークの実装例
Expressはtext/htmlでありながら<title>欠如や<a>リンク削除などの問題
Honoは301、303でもレスポンスコンテンツが空のtext/plainを返す問題
res.send(), c.html()などを用いた独自HTML返却による改善の必要性
現代の課題
自動リダイレクト無効環境への配慮が薄れたエンジニアの増加
フレームワークのデフォルト出力に依存せず適切なHTMLを返す重要性